package com.finna.tenant.service;

import com.finna.tenant.dto.*;
import com.finna.tenant.dto.AccountDTO.AccountWithTenantsResponse;
import com.finna.tenant.dto.TenantAccountJoinDTO.*;

/**
 * 租户账号关联服务接口
 */
public interface TenantAccountJoinService {
    
    /**
     * 添加租户账号关联
     */
    TenantAccountJoinResponse create(TenantAccountJoinCreateRequest request);
    
    /**
     * 更新租户账号关联
     */
    TenantAccountJoinResponse update(Long id, TenantAccountJoinUpdateRequest request);
    
    /**
     * 删除租户账号关联
     */
    void delete(Long id);
    
    /**
     * 获取租户账号关联详情
     */
    TenantAccountJoinResponse getById(Long id);
    
    /**
     * 获取租户账号关联列表（分页）
     */
    PageResponse<TenantAccountJoinResponse> list(TenantAccountJoinListRequest request);
    
    /**
     * 获取租户的账号列表
     */
    TenantWithAccountsResponse getTenantAccounts(Long tenantId);
    
    /**
     * 获取账号所属的租户列表
     */
    AccountWithTenantsResponse getAccountTenants(Long accountId);
    
    /**
     * 获取租户账号角色信息
     */
    TenantAccountJoinResponse getTenantAccountRole(Long tenantId, Long accountId);

    void deleteByTenantId(Long id);
}
